/*-----------------------------------------------------------------------------------------------
// Copyright (C) 2016 华跃博弈科技有限公司 
//
// 文件名：        RepositoryModule.cs
// 文件功能描述：   向Autofac容器注册所有的仓储对象
//
// 
// 创建标识：       庞永飞  2016-04-24
//
// 修改标识：
// 修改描述：
//
// 备注：	
// 				
//-----------------------------------------------------------------------------------------------*/

using Autofac;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HYBY.Task.Repository {

  public class RepositoryModule : Module {
    private bool _perRequest;
    public RepositoryModule(bool supportPerRequest) {
      this._perRequest = supportPerRequest;
    }
    protected override void Load(ContainerBuilder builder) {
      if (builder == null)
        throw new ArgumentNullException("builder");

      builder.RegisterGeneric(typeof(BaseRepository<>))
         .As(typeof(IRepository<>));
         //.InstancePerRequest();

      var tt = builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetExecutingAssembly())
             .Where(t => t.Name.EndsWith("Repository"))
             .AsImplementedInterfaces();
      if (this._perRequest) {
        tt.InstancePerRequest();
      }
      else {
        tt.InstancePerLifetimeScope();
      }
    }
  }
}